# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.YouTubeAnalytics.V2.Model.ErrorProto do
  @moduledoc """
  Describes one specific error.

  ## Attributes

  *   `argument` (*type:* `list(String.t)`, *default:* `nil`) - Error arguments, to be used when building user-friendly error messages given the error domain and code. Different error codes require different arguments.
  *   `code` (*type:* `String.t`, *default:* `nil`) - Error code in the error domain. This should correspond to a value of the enum type whose name is in domain. See the core error domain in error_domain.proto.
  *   `debugInfo` (*type:* `String.t`, *default:* `nil`) - Debugging information, which should not be shared externally.
  *   `domain` (*type:* `String.t`, *default:* `nil`) - Error domain. RoSy services can define their own domain and error codes. This should normally be the name of an enum type, such as: gdata.CoreErrorDomain
  *   `externalErrorMessage` (*type:* `String.t`, *default:* `nil`) - A short explanation for the error, which can be shared outside Google. Please set domain, code and arguments whenever possible instead of this error message so that external APIs can build safe error messages themselves. External messages built in a RoSy interface will most likely refer to information and concepts that are not available externally and should not be exposed. It is safer if external APIs can understand the errors and decide what the error message should look like.
  *   `location` (*type:* `String.t`, *default:* `nil`) - Location of the error, as specified by the location type. If location_type is PATH, this should be a path to a field that's relative to the request, using FieldPath notation (net/proto2/util/public/field_path.h). Examples: authenticated_user.gaia_id resource.address[2].country
  *   `locationType` (*type:* `String.t`, *default:* `nil`) - 
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :argument => list(String.t()) | nil,
          :code => String.t() | nil,
          :debugInfo => String.t() | nil,
          :domain => String.t() | nil,
          :externalErrorMessage => String.t() | nil,
          :location => String.t() | nil,
          :locationType => String.t() | nil
        }

  field(:argument, type: :list)
  field(:code)
  field(:debugInfo)
  field(:domain)
  field(:externalErrorMessage)
  field(:location)
  field(:locationType)
end

defimpl Poison.Decoder, for: GoogleApi.YouTubeAnalytics.V2.Model.ErrorProto do
  def decode(value, options) do
    GoogleApi.YouTubeAnalytics.V2.Model.ErrorProto.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.YouTubeAnalytics.V2.Model.ErrorProto do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
